package edu.uoc.tds.common;

import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JOptionPane;

public class Utils {

    public static boolean isEmpty(Object object) {
        if (object == null || object.toString().trim().equals("")) {
            return true;
        } else {
            return false;
        }
    }

    public static boolean isDate(String date) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            sdf.setLenient(false);
            sdf.parse(date);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean isNumber(String number) {
        try {
            new Integer(number);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
    
    public static boolean isDouble(String number) {
    	boolean resultado = true;
    	try {
    		new Double(number);
    	} catch (Exception e) {
    		resultado = false;
    	}
    	return resultado;
    }
    
    public static Integer convertirInteger(String number) {
    	Integer entero = null;
    	
        try {
            entero = new Integer(number);
        } catch (Exception e) {
        }
        
        return entero;
    }
    
    public static Double convertirDouble(String number) {
    	Double resultado = null;
    	try {
    		resultado = new Double(number);
    	} catch (Exception e) {
    	}
    	return resultado;
    }
    
    public static Date convertirFecha (String fecha) {
    	Date fechaConvertida = null;
    	
    	try {
    		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    		sdf.setLenient(false);
    		fechaConvertida = sdf.parse(fecha);
    	} catch (Exception e) {
    	}
    	
        return fechaConvertida;
    }
    
    public static String convertirFecha(Date fecha) {
   		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
   		sdf.setLenient(false);
   		return sdf.format(fecha);
    }
    
    public static void tratarRemoteException(RemoteException re) {
    	while (re.getCause() != null && re.getCause() instanceof RemoteException) {
    		re = (RemoteException) re.getCause();
    	}
		if (re.getCause() != null && re.getCause() instanceof EGestioEventsException) {
			tratarEGestioEventsException((EGestioEventsException) re.getCause());
		} else {
			re.printStackTrace();
    		String mensaje = UtilLenguaje.getMessage("remote.err.desc") + (re.getMessage() != null ? "\n" + re.getMessage() : "");
            JOptionPane.showMessageDialog(null, mensaje,
            		UtilLenguaje.getMessage("remote.err.titulo"), JOptionPane.ERROR_MESSAGE);
		}
    }
    
    public static void tratarEGestioEventsException(EGestioEventsException e) {
		e.printStackTrace();
		String mensaje = UtilLenguaje.getMessage(e.getDescripcion()) + (e.getMessage() != null ? "\n" + e.getMessage() : "");
        JOptionPane.showMessageDialog(null, mensaje,
        		UtilLenguaje.getMessage(e.getTitulo()), JOptionPane.ERROR_MESSAGE);
    }

}
